#include<bits/stdc++.h>
using namespace std;
char a[1000010];
const int n=30;
char s[n+1][n+2];
char t[1000010];
int sx,sy;
bool flag;
struct node{
    char ch;
    int x,y;
};
bool cmp(node i,node j){
    return (abs(i.x-(n/2))+abs(i.y-(n/2)))<(abs(j.x-(n/2))+abs(j.y-(n/2)));
}
void dfs(int x,int y,int i){
    char ss=s[x][y];
    if(!ss)s[x][y]=a[i];
    else if(ss!=a[i])return;
    if(!a[i+1]){
        flag=1;
        return;
    }
    node d[4];
    d[0]=(node){'U',x-1,y};
    d[1]=(node){'D',x+1,y};
    d[2]=(node){'L',x,y-1};
    d[3]=(node){'R',x,y+1};
    sort(d,d+4,cmp);
    for(int k=0;k<4;k++){
        if(d[k].x>=1&&d[k].x<=n&&d[k].y>=1&&d[k].y<=n){
            if(s[d[k].x][d[k].y]==a[i+1]){
                t[i]=d[k].ch;
                dfs(d[k].x,d[k].y,i+1);
                if(flag)return;
            }
        }
    }
    for(int k=0;k<4;k++){
        if(d[k].x>=1&&d[k].x<=n&&d[k].y>=1&&d[k].y<=n){
            if(!s[d[k].x][d[k].y]){
                t[i]=d[k].ch;
                dfs(d[k].x,d[k].y,i+1);
                if(flag)return;
            }
        }
    }
    s[x][y]=ss;
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    freopen("snake.in","r",stdin);
    freopen("snake.out","w",stdout);
    cin>>a;
    dfs(sx=(n/2),sy=(n/2),0);
    cout<<n<<' '<<n<<'\n';
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(!s[i][j])s[i][j]='R';
            cout<<s[i][j];
        }
        cout<<'\n';
    }
    cout<<sx<<' '<<sy<<'\n';
    cout<<t;
    return 0;
}
